package demo1;

public class 位运算02 {
    public static void main(String[] args) {
        int a=1>>2;//1 向右位移2位 00000001 算术右移 00000000 得到0
        //-1的原码 1...00000001
        //-1的反码 1...11111110
        //-1的补码 1...11111111
        //补码算术右移 1...11111111【符号位和溢出的一样】
        //运算反码     1...11111110
        //原码         1...00000001 得到-1
        int b=-1>>2;//算术右移 00000001 -> 00000011 得到-1
        int c=1<<2;//算术左移,得到4, 等价于 1 * 2 * 2 = 4
        //-1的补码 1...11111111
        //补码的算术左移 1...11111111 -> 1...11111100
        //运算的反码：1...11111011
        //运算的原码：1...00000100 得到-4
        int d=-1<<2;//算术左移，得到-4，等价于 -1 * 2 * 2 = -4

        // 3的补码：00000011
        // 补码的无符号右移：00000011 -> 00000000 因为为正数所以三码合一
        int e=3>>>2;//无符号右移，得到0
        //a,b,c,d,e结果是多少
        System.out.println("a="+a);//0
        System.out.println("b="+b);//-1
        System.out.println("c="+c);//4
        System.out.println("d="+d);//-4
        System.out.println("e="+e);//0
    }
}
